#!/bin/bash

# 默认安装目录
INSTALL_DIR="/usr/local/frp"
# 默认配置文件目录
CONFIG_DIR="/etc/frp"
# 默认FRP版本
FRP_VERSION="0.47.0"
# 默认服务名称
SERVICE_NAME="frps"
# 默认服务配置文件名
SERVICE_CONFIG="frps.ini"
# 默认日志文件目录
LOG_DIR="/var/log/frp"
# 默认PID文件目录
PID_DIR="/var/run/frp"
# 默认FRP监听端口
FRP_PORT=7000
# 默认FRP Token
FRP_TOKEN=""

# 获取参数
while [[ $# -gt 0 ]]
do
    key="$1"
    case $key in
        -d|--dir)
        INSTALL_DIR="$2"
        shift 2
        ;;
        -c|--config)
        CONFIG_DIR="$2"
        shift 2
        ;;
        -v|--version)
        FRP_VERSION="$2"
        shift 2
        ;;
        -s|--service)
        SERVICE_NAME="$2"
        shift 2
        ;;
        -p|--configpath)
        SERVICE_CONFIG="$2"
        shift 2
        ;;
        -l|--logdir)
        LOG_DIR="$2"
        shift 2
        ;;
        --port)
        FRP_PORT="$2"
        shift 2
        ;;
        --token)
        FRP_TOKEN="$2"
        shift 2
        ;;
        *)
        echo "未知参数: $1"
        exit 1
        ;;
    esac
done

# 下载并安装FRP
cd /tmp
wget https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz
tar -xzvf frp_${FRP_VERSION}_linux_amd64.tar.gz
mv frp_${FRP_VERSION}_linux_amd64 $INSTALL_DIR

# 创建配置文件目录
mkdir -p $CONFIG_DIR

# 创建日志文件目录
mkdir -p $LOG_DIR

# 创建PID文件目录
mkdir -p $PID_DIR

# 创建服务配置文件
cat > $CONFIG_DIR/$SERVICE_CONFIG <<EOF
[common]
bind_port = $FRP_PORT
EOF

if [ -n "$FRP_TOKEN" ]; then
    echo "token = $FRP_TOKEN" >> $CONFIG_DIR/$SERVICE_CONFIG
fi

# 创建systemd服务文件
cat > /usr/lib/systemd/system/$SERVICE_NAME.service <<EOF
[Unit]
Description=FRP Server Service
After=syslog.target network.target

[Service]
Type=simple
ExecStart=$INSTALL_DIR/frps -c $CONFIG_DIR/$SERVICE_CONFIG -L $LOG_DIR/frps.log -pid $PID_DIR/frps.pid
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target
EOF

# 重新加载systemd配置文件
systemctl daemon-reload

# 启动FRP服务
systemctl start $SERVICE_NAME

echo "📢FRP服务安装成功并已启动!🎉"
